From 1142fa360d619ef8455a4fac96a6a1ffab25b964 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 4 May 2005 16:50:49 +0000 Subject: [PATCH] bitkeeper revision 1.1389.5.11 (4278fd69QwxUePkKl_WI29DSDv8_kA) Fix MP-table parsing to correctly use ISA fixmap area. Signed-off-by: Keir Fraser --- .../arch/xen/i386/kernel/mpparse.c | 3 +-- .../arch/xen/i386/kernel/setup.c | 13 +++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/mpparse.c b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/mpparse.c index 94ab4fd89f..8f701413a5 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/mpparse.c +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/mpparse.c @@ -690,7 +690,7 @@ void __init get_smp_config (void) * Read the physical hardware table. Anything here will * override the defaults. */ - if (!smp_read_mpc((void *)mpf->mpf_physptr)) { + if (!smp_read_mpc(isa_bus_to_virt(mpf->mpf_physptr))) { smp_found_config = 0; printk(KERN_ERR "BIOS bug, MP table errors detected!...\n"); printk(KERN_ERR "... disabling SMP support. (tell your hw vendor)\n"); @@ -743,7 +743,6 @@ static int __init smp_scan_config (unsigned long base, unsigned long length) smp_found_config = 1; printk(KERN_INFO "found SMP MP-table at %08lx\n", virt_to_phys(mpf)); - reserve_bootmem(virt_to_phys(mpf), PAGE_SIZE); if (mpf->mpf_physptr) { /* * We cannot access to MPC table to compute diff --git a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c index 68950efa56..d4c5597001 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c @@ -1133,12 +1133,6 @@ static unsigned long __init setup_memory(void) */ acpi_reserve_bootmem(); #endif -#ifdef CONFIG_X86_FIND_SMP_CONFIG - /* - * Find and reserve possible boot-time SMP configuration: - */ - find_smp_config(); -#endif #ifdef CONFIG_BLK_DEV_INITRD if (xen_start_info.mod_start) { @@ -1503,6 +1497,13 @@ void __init setup_arch(char **cmdline_p) #endif paging_init(); +#ifdef CONFIG_X86_FIND_SMP_CONFIG + /* + * Find and reserve possible boot-time SMP configuration: + */ + find_smp_config(); +#endif + /* Make sure we have a correctly sized P->M table. */ if (max_pfn != xen_start_info.nr_pages) { phys_to_machine_mapping = alloc_bootmem_low_pages( -- 2.30.2